{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Working with [Audio](https://docs.activeloop.ai/en/latest/concepts/features.html#audio)\n",
    "\n",
    "In this notebook, we will see how to handle audio data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# first we install hub\n",
    "# runtime enviroment\n",
    "\n",
    "!pip install hub"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note**: Restart the colab runtime as few packages has been updated or you may get error (<font color=\"red\">FileNotFoundError</font>)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from hub.schema import Primitive, Audio, ClassLabel\n",
    "from hub import transform, schema\n",
    "\n",
    "import librosa\n",
    "from librosa import display\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from tqdm import tqdm\n",
    "\n",
    "from glob import glob\n",
    "from time import time\n",
    "\n",
    "plt.style.use(\"ggplot\")\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Amplitude')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fnames = glob(\"./Data/audio/*\")\n",
    "\n",
    "# lets look at an audio file\n",
    "audio, sr = librosa.load(fnames[0])\n",
    "librosa.display.waveplot(audio, sr=sr)\n",
    "plt.ylabel(\"Time\")\n",
    "plt.xlabel(\"Amplitude\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## (A) Defining a Schema for Audio Files\n",
    "A schema is a python `dict` that contains metadata about our dataset. \n",
    "\n",
    "For this example, we tell Hub that our audio files have variable shape, perhaps as long as 192,000 samples. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "my_schema = {\n",
    "    \"wav\": Audio(shape=(None,), max_shape=(192000,), file_format=\"wav\"),\n",
    "    \"sampling_rate\": Primitive(dtype=int),    \n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## (B) Defining Transforms\n",
    "First, we define a method `load_transform` and decorate it with `@transform`. This is the function that will applied to **each instance/sample** of our dataset. \n",
    "\n",
    "In our example, for each element in the list `fnames`, we want to read the wav file into memory (with `librosa.load`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "@transform(schema=my_schema)\n",
    "def load_transform(sample):\n",
    "    \n",
    "    audio, sr = librosa.load(sample, sr=None)\n",
    "    \n",
    "    return {\n",
    "        \"wav\": audio,\n",
    "        \"sampling_rate\": sr\n",
    "    }"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "hub.compute.transform.Transform"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ds = load_transform(fnames) # returns a transform object\n",
    "type(ds)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## (C) Finally, Execution!\n",
    "Hub lazily executes, so nothing happens until we invoke `store`. By invoking `store`, we apply `load_transform` to our dataset and push everything."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/mynameisvinn/anaconda3/lib/python3.8/site-packages/zarr/creation.py:210: UserWarning: ignoring keyword argument 'mode'\n",
      "  warn('ignoring keyword argument %r' % k)\n",
      "Computing the transormation: 100%|██████████| 14.0/14.0 [00:01<00:00, 13.5 items/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Elapsed time: 5.174474000930786\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "start = time()\n",
    "\n",
    "tag = \"mynameisvinn/vibrations\"\n",
    "ds2 = ds.store(tag)\n",
    "type(ds2)\n",
    "\n",
    "end = time()\n",
    "print(\"Elapsed time:\", end - start)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
